package com.whmskj.xjlhsc.mobie.equipmentManage.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class TimeFormatConverter {
    
    // 定义可能的输入日期时间格式
    private static final List<SimpleDateFormat> INPUT_FORMATS = new ArrayList<>();
    private static final SimpleDateFormat OUTPUT_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    static {
        // 添加可能的输入格式，可根据实际需求扩展
        INPUT_FORMATS.add(new SimpleDateFormat("yyyy-MM-dd"));          // 仅日期
        INPUT_FORMATS.add(new SimpleDateFormat("yyyy-MM"));          // 仅日期
        INPUT_FORMATS.add(new SimpleDateFormat("yyyy/MM/dd"));          // 仅日期，斜杠分隔
        INPUT_FORMATS.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); // 完整日期时间
        INPUT_FORMATS.add(new SimpleDateFormat("yyyy-MM-dd HH:mm"));    // 日期+时分
        INPUT_FORMATS.add(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")); // 斜杠分隔的完整日期时间
    }
    
    /**
     * 将时间字符串转换为"yyyy-MM-dd HH:mm:ss"格式
     * @param timeStr 输入的时间字符串
     * @return 转换后的时间字符串，转换失败返回null
     */
    public static String convertToStandardFormat(String timeStr) {
        if (timeStr == null || timeStr.trim().isEmpty()) {
            return null;
        }
        
        // 尝试用各种输入格式解析
        for (SimpleDateFormat format : INPUT_FORMATS) {
            try {
                // 设置解析时宽松模式为false，严格匹配格式
                OUTPUT_FORMAT.setLenient(false);
                Date date = format.parse(timeStr.trim());
                // 转换为标准输出格式
                return OUTPUT_FORMAT.format(date);
            } catch (ParseException e) {
                // 解析失败，尝试下一种格式
                throw new RuntimeException(e);
            }
        }
        
//         所有格式都无法解析
        return null;
    }
    
    // 测试方法
    public static void main(String[] args) {
        // 测试各种输入格式
        String[] testCases = {
            "2024-08-07",
            "2024/08/08",
            "2024-08-09 12:30:45",
            "2024-08-10 15:45",
            "2024/08/11 08:30:00",
            "invalid-date"
        };
        
//        for (String testCase : testCases) {
            String result = convertToStandardFormat("2024-08-07");
            System.out.println("输入: " + "2024-08-07" + " -> 输出: " + (result != null ? result : "格式无效"));
//        }
    }
}